<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <style>
      .showContainer {
        width: 520px;
        height: 280px;
        margin: 0 auto;
        position: relative;
        border: 1px solid;
        overflow: hidden;
      }

      .container {
        width: 2600px;
        height: 280px;
        position: absolute;
        left: -520px;
      }

      .container img {
        float: left;
      }

      .nextorpre {
        width: 520px;
        position: absolute;
        top: 40%;
        font-size: 50px;
        color: red;
        z-index: 10;
      }

      .next {
        float: right;
        cursor: pointer;
      }
      .pre {
        /* float: right; */
        cursor: pointer;
      }
    </style>
  </head>
  <body>
    <div class="showContainer">
      <div class="nextorpre">
        <span class="pre"><</span>
        <span class="next">></span>
      </div>
      <div class="container">
        <img src="./imgs/1t.png" alt="" />
        <img src="./imgs/2t.png" alt="" />
        <img src="./imgs/3t.png" alt="" />
        <img src="./imgs/4t.png" alt="" />
        <img src="./imgs/5t.png" alt="" />
      </div>
    </div>
    <script>
      //轮播图的运动就是container容器的运动 让container向左边移动就可以了

      /* 
      实现上一页的功能
      1.实现上一页的无缝滚动 把最后一张图赋值一份放在最前面
      2.自动轮播和下一页 需要多加520px  初始值不是0 而是-520px
      3.实现上一页功能和下一页类似
      */
      var containerEle = document.querySelector(".container");
      var showContainerEle = document.querySelector(".showContainer");
      //
      var index = 0; //图片所在的位置索引值
      //自动播放函数,打开页面自动播放 开头直接调用
      var timer;

      // autoPlay();
      var containerEle = document.querySelector(".container");
      var showContainerEle = document.querySelector(".showContainer");

      var index = 0; // 图片所在的位置索引值；
      var timer;
      // autoPlay();
      function autoPlay() {
        console.log("autoplay");
        timer = setInterval(function () {
          move(containerEle, "left", -520 * (index + 1) - 520, function () {
            index++;
            console.log("运动结束", index);

            if (index == 5) {
              containerEle.style.left = "-520px";
              index = 0;
            }
          });
        }, 2000); // 间隔时间需要大于 动画完成的事件
      }

      //再设置鼠标移入的时候 轮播图停止运动  鼠标移出的时候又开始自动轮播
      //enter leave      over  out
      //鼠标移入
      showContainerEle.onmouseenter = function () {
        //停止轮播
        clearInterval(timer); //这里调用不到函数里的timer,就只能把函数里面timer做伪全局
      };
      //鼠标移出
      showContainerEle.onmouseleave = function () {
        //重新开始轮播
        autoPlay();
      };

      //
      //
      // 实现点击下一页按钮之后切换到下一页 ；
      // 获取下一页按钮
      var nextEle = document.querySelector(".next");
      nextEle.onclick = function () {
        move(containerEle, "left", -520 * (index + 1) - 520, function () {
          index++;
          if (index == 5) {
            containerEle.style.left = "-520px";
            index = 0;
          }
        });
      };

      //
      //
      //
      //获取上一页按钮

      var preEle = document.querySelector(".pre");
      preEle.onclick = function () {
        console.log("点击了上一页按钮", index);
        /* 
                index  0  ----》 0px
                index 1  ----》 -520px
                index 2 ----》 -1040px
                index n ---》 n*-520
            */
        move(containerEle, "left", -520 * index, function () {
          index--;
          console.log("index值是", index);
          if (index == -1) {
            containerEle.style.left = "-2600px";
            index = 4;
          }
        });
      };
      //
      //
      //

      //

      //
      //
      //
      //方法一就是直接在div里面复制一个img1 ,但是遇到后期有变量或者有变化的时候不方便修改

      //方法二  用js去添加图片
      //要赋值第一张图片 到最后一张图的后面去
      function copyImg() {
        // 获取第一个图片
        var firstItem = containerEle.firstElementChild;
        // console.log(firstItem)
        // 给第一个元素复制一份 ；
        var copyFirstItem = firstItem.cloneNode(true);

        // 获取最后一张图 ；
        var lastItem = containerEle.lastElementChild;
        // console.log("?",lastItem);
        // 复制最后一张图 ；
        var copyLastItem = lastItem.cloneNode(true);

        containerEle.style.width = "3640px";
        // 把最后一张图添加到最前面；
        containerEle.insertBefore(copyLastItem, firstItem);

        // 把复制的第一张图片添加到最后
        containerEle.appendChild(copyFirstItem);
      }

      copyImg();
      //
      //
      //
      //
      //
      //封装一个函数
      function move(boxEle, dir, target, cb) {
        var timer = setInterval(function () {
          // 获取当前box的left值
          var num3 = parseInt(getComputedStyle(boxEle)[dir]);
          // 当前方块所在的位置 和 目标位置比较
          num3 += 5 * (target > num3 ? 1 : -1);
          boxEle.style[dir] = num3 + "px";
          // 假定 运动 500的时候开始向下移动；
          if (num3 == target) {
            clearInterval(timer);
            // console.log("停止了");
            cb();
          }
        }, 5);
      }
    </script>
  </body>
</html>
